GTK_TYPE_TREE_MENU,
GtkTreeMenuPrivate);
priv = menu->priv;
+
+ gtk_menu_set_reserve_toggle_size (GTK_MENU (menu), FALSE);
}
static void
P_("TreeMenu root row"),
P_("The TreeMenu will display children of the "
"specified root"),
- GTK_TYPE_TREE_ROW_REFERENCE,
+ GTK_TYPE_TREE_PATH,
GTK_PARAM_READWRITE));
g_object_class_install_property (object_class,
GtkWidget *submenu;
row_path = gtk_tree_model_get_path (priv->model, &iter);
- submenu = gtk_tree_menu_new_with_area (priv->area);
-
- gtk_tree_menu_set_model (GTK_TREE_MENU (submenu), priv->model);
- gtk_tree_menu_set_root (GTK_TREE_MENU (submenu), row_path);
+ submenu = gtk_tree_menu_new_full (priv->area, priv->model, row_path);
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_item), submenu);
gtk_tree_menu_new_with_area (GtkCellArea *area)
{
return (GtkWidget *)g_object_new (GTK_TYPE_TREE_MENU,
- "area", area,
+ "cell-area", area,
+ NULL);
+}
+
+GtkWidget *
+gtk_tree_menu_new_full (GtkCellArea *area,
+ GtkTreeModel *model,
+ GtkTreePath *root)
+{
+ return (GtkWidget *)g_object_new (GTK_TYPE_TREE_MENU,
+ "cell-area", area,
+ "model", model,
+ "root", root,
NULL);
}
g_object_ref (priv->model);
}
-
- /* Changing the model in any way invalidates the currently set root,
- * so we implicitly reset it to NULL here */
- gtk_tree_menu_set_root (menu, NULL);
-
- g_object_notify (G_OBJECT (menu), "model");
}
}
GtkTreeMenuPrivate *priv;
g_return_if_fail (GTK_IS_TREE_MENU (menu));
- g_return_if_fail (path == NULL || menu->priv->model != NULL);
+ g_return_if_fail (menu->priv->model != NULL || path == NULL);
priv = menu->priv;
(GtkCallback) gtk_widget_destroy, NULL);
/* Populate for the new root */
- gtk_tree_menu_populate (menu);
+ if (priv->model)
+ gtk_tree_menu_populate (menu);
+
+ gtk_widget_queue_resize (GTK_WIDGET (menu));
}
GtkTreePath *
GtkWidget *gtk_tree_menu_new (void);
GtkWidget *gtk_tree_menu_new_with_area (GtkCellArea *area);
+GtkWidget *gtk_tree_menu_new_full (GtkCellArea *area,
+ GtkTreeModel *model,
+ GtkTreePath *root);
void gtk_tree_menu_set_model (GtkTreeMenu *menu,
GtkTreeModel *model);
GtkTreeModel *gtk_tree_menu_get_model (GtkTreeMenu *menu);